package org.sky.algorithm.sort;

import java.util.Arrays;

/**
 * 插入排序
 *
 * @author fog
 * @date 2021/11/7
 */

public class Insert {

    public static void main(String[] args) {

        int[] arr = new int[]{2, 8, 5, 3, 0, 6};

        System.out.println(Arrays.toString(arr));

        insertSort(arr);

        System.out.println(Arrays.toString(arr));

    }

    public static void insertSort(int[] arr) {

        for (int i = 1; i < arr.length; i++) {
            // 如果当前数字比前一个数字小
            if (arr[i] < arr[i - 1]) {
                // 把当前遍历数字存储起来
                int temp = arr[i];

                int j;
                // 遍历当前数字前面的所有数字
                for (j = i - 1; j >= 0 && temp < arr[j]; j--) {

                    arr[j + 1] = arr[j];
                }

                // 把临时变量（外层for循环的当前元素）赋给不满足条件的后一个元素
                arr[j + 1] = temp;

            }

        }

    }

}
